<!DOCTYPE html>
<html>

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>基础知识</title>
	<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css"" rel="stylesheet">
	<link href="https://cdn.bootcdn.net/ajax/libs/animate.css/3.2.3/animate.css" rel="stylesheet">
	<link rel="stylesheet" type="text/css" href="../../static/css/public.css" />
	<style type="text/css">
		li{
			text-indent: 3em;
			list-style: none;
		}
	</style>
</head>
<body>
	<!--右边内容-->
	<div id="app" class="main">
		<div class="shadow" v-cloak>
			<div>
				<h4>cookie属性</h4>
				<p>
					客户端请求服务器时，如果服务器需要记录该用户状态，
					就使用response向客户端浏览器颁发一个Cookie。
					而客户端浏览器会把Cookie保存起来。当浏览器再请求 
					服务器时，浏览器把请求的网址连同该Cookie一同提交给服务器。
					服务器通过检查该Cookie来获取用户状态。
					cookie是不可跨域，但是只在域名不同的情况下不支持跨域，
					忽略协议与端口，https://localhost:80/和http://localhost:8080/的
					Cookie是共享的，可以通过domain设置域，path设置域下的共享路径
				</p>
				<ul>
					<li>name 表示设置的cookie名也就是key，不能重复，不可更改</li>
					<li>value 表示设置cookie的值</li>
					<li>domain 表示cookie绑定的域名，默认绑定当前域，多级域名不可交换cookie，
					如果设置以点开头的域名，则所有子域名可以访问，
					如设置.baidu.com，则a.baidu.com可访问其上级域名的cookie</li>
					<li>path 表示cookie所能使用的路径，默认'/'路径，
					只要满足当前匹配路径以及子路径都可以共享cookie</li>
					<li>maxAge 表示cookie失效时间，单位秒，正数为失效时间，
					负数表示当前cookie在浏览器关闭时失效，0表示删除cookie</li>
					<li>secure 表示cookie是否使用安全协议传输如HTTPS、SSL，默认不使用，只在HTTPS等安全协议下有效，
					这个属性并不能对客户端的cookie进行加密，不能保证绝对的安全性</li>
					<li>version 当前cookie使用的版本号，0 表示遵循Netscape的Cookie规范(多数)，
					1表示遵循W3C的RFC2109规范(较严格)，默认为0</li>
					<li>same-site 规定浏览器不能在跨域请求中携带 Cookie，减少CSRF攻击</li>
					<li>HttpOnly 如果这个属性设置为true，就不能通过js脚本来获取cookie的值，
					用来限制非HTTP协议程序接口对客户端Cookie进行访问，
					可以有效防止XSS攻击(跨站脚本攻击，代码注入攻击)</li>
					<li></li>
				</ul>
				<pre>
				</pre>
			</div>
			<div>
				<h4>Session</h4>
				<p>
					session 表示服务器与客户端的一次会话过程，
					session对象存储特定用户的属性及配置信息
					当用户在应用程序的 Web 页之间跳转时，
					存储在session 对象中的变量将不会丢失，
					而是在整个用户会话中一直存在下去。当客户端关闭会话，
					或者 session 超时失效时会话结束
				</p>
				<p>
					用户第一次请求服务器的时候，服务器根据用户提交的相关信息，
					创建创建对应的 session ，请求返回时将此 session 的唯一标识信息 
					sessionID 返回给浏览器，浏览器接收到服务器返回的 sessionID 信息后，
					会将此信息存入到 Cookie 中，同时 Cookie 记录此 sessionID 属于哪个域名
				</p>
				<p>
					当用户第二次访问服务器的时候，请求会自动判断此域名下是否存在 Cookie 信息，
					如果存在自动将 Cookie 信息也发送给服务端，服务端会从 Cookie 
					中获取 sessionID，再根据 sessionID 查找对应的 session 信息，
					如果没有找到说明用户没有登录或者登录失效，
					如果找到 session 证明用户已经登录可执行后面操作
				</p>
			</div>
			<div>
				<h4>cookie与session的区别</h4>
				<ul>
					<li>cookie数据存放在客户的浏览器上，session数据放在服务器上</li>
					<li>cookie不是很安全，别人可以分析存放在本地的cookie并进行cookie欺骗，
					考虑到安全应当使用session。用户验证这种场合一般会用 session</li>
					<li>session保存在服务器，客户端不知道其中的信息；反之，
					cookie保存在客户端，服务器能够知道其中的信息</li>
					<li>session会在一定时间内保存在服务器上，当访问增多，
					会比较占用你服务器的性能，
					考虑到减轻服务器性能方面，应当使用cookie</li>
					<li>session中保存的是对象，cookie中保存的是字符串</li>
					<li>session不能区分路径，同一个用户在访问一个网站期间，
					所有的session在任何一个地方都可以访问到，
					而cookie中如果设置了路径参数，
					那么同一个网站中不同路径下的cookie互相是访问不到的</li>
					<li>session: 是在服务端保存的一个数据结构，用来跟踪用户的状态，
					这个数据可以保存在集群、数据库、文件中</li>
					<li>cookie: 是客户端保存用户信息的一种机制，用来记录用户的一些信息，
					也是实现session的一种方式</li>
				</ul>
			</div>
			<div>
				<h4>本地缓存区别</h4>
				<ul>
					<li>
						<div>数据存储方面</div>
						<ul>
							<li>cookie数据始终在同源的http请求中携带（即使不需要），
							即cookie在浏览器和服务器间来回传递。
							cookie数据还有路径（path）的概念，
							可以限制cookie只属于某个路径下</li>
							<li>sessionStorage和localStorage不会自动把数据发送给服务器，仅在本地保存。</li>
						</ul>
					</li>
					<li>
						<div>存储数据大小</div>
						<ul>
							<li>存储大小限制也不同，cookie数据不能超过4K，
							同时因为每次http请求都会携带cookie、
							所以cookie只适合保存很小的数据，如会话标识。</li>
							<li>sessionStorage和localStorage虽然也有存储大小的限制，
							但比cookie大得多，可以达到5M或更大</li>
						</ul>
					</li>
					<li>
						<div>数据存储有效期</div>
						<ul>
							<li>sessionStorage：仅在当前浏览器窗口关闭之前有效； 
							localStorage：始终有效，窗口或浏览器关闭也一直保存，
							本地存储，因此用作持久数据；</li>
							<li>cookie：只在设置的cookie过期时间之前有效，即使窗口关闭或浏览器关闭。
							当cookie没有设置expires的时候，该cookie只会在网页会话期间存在，
							当浏览器退出的时候，该cookie就会消失。</li>
						</ul>
					</li>
					<li>
						<div>作用域不同</div>
						<ul>
							<li>sessionStorage不在不同的浏览器窗口中共享，即使是同一个页面；</li>
							<li>localStorage在所有同源窗口中都是共享的；
							也就是说只要浏览器不关闭，数据仍然存在</li>
							<li>cookie: 也是在所有同源窗口中都是共享的.
							也就是说只要浏览器不关闭，数据仍然存在</li>
						</ul>
					</li>
				</ul>
				<div >
					<img style="width: 80%;height: auto;margin-left: 4em;"
					src="../../static/img/1719d566c4dee532?imageslim" >
				</div>
			</div>
		</div>
	</div>
	<!--页面加载进度条-->
	<script src="https://cdn.bootcdn.net/ajax/libs/pace/0.5.0/pace.min.js"></script>
</body>

</html>